Technical Field
This disclosure relates to software compilation and more specifically to compilation into a target environment.
Description of the Related Art
Modern computing systems may include multiple processors or processor cores configured to execute software programs or applications. The programs and applications may allow the processors or processor cores to perform a variety of tasks. For example, when executing a web browser program, a processor may perform operations such as requesting data from a server via a network connect, and displaying the request data to a screen or other suitable display device. Such program and applications may initially be stored in long-term storage, such as, hard disc drives, CD ROMs, and then transferred to memory for retrieval by a processor or processor core for execution.
Such programs and applications may be written in a high-level programming language, such as, e.g., Java™, C, C++, and the like. In order to allow a computing system to execute the program or application, it must be converted into a format compatible with the computing system. This conversion is commonly referred to as “compilation.” During compilation, the high-level programming language is converted into binary data (commonly referred to as “binaries” or “machine code”) which includes commands that are part of the Instruction Set Architecture or “ISA” of the computing system.
During compilation, the compiler may perform syntax, lexical, and semantic checks, and generate warning or error messages in response to errors found during the checks. After the checks have been completed, the compiler may perform optimization which may include the discovery and propagation of constant values, removal of useless or unreachable code, and the like. Once any optimization has been completed, the complier may then generate machine code executable by a processor or processor core.